package com.atguigu.tingshu.account.service;

import com.atguigu.tingshu.common.result.Result;
import com.atguigu.tingshu.model.account.UserAccount;
import com.atguigu.tingshu.vo.account.AccountLockResultVo;
import com.atguigu.tingshu.vo.account.AccountLockVo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.math.BigDecimal;

public interface UserAccountService extends IService<UserAccount> {


    /**
     * 锁定用户账户金额
     * @param accountLockVo 锁定数据对象
     * @return
     */
    Result<AccountLockResultVo> checkAndLockAccountMoney(AccountLockVo accountLockVo);

    /**
     * 保存用户账户流水明细表
     * @param userId 用户id
     * @param content  消费内容
     * @param amount 消费金额
     * @param orderNo 订单号
     */
    void saveUserAccountDetail(String tradeType, Long userId, String content, BigDecimal amount, String orderNo);

    /**
     * 根据用户id获取当前用户的可用余额
     * @param userId 用户id
     * @return 可用余额
     */
    BigDecimal getAvailableAmount(Long userId);
}
